(function () {
	var ns = ij.pkg('core').namespaceString;
	ij.core.Object = ij.core.Class.extend({
		apply: function (extension, overwrite_existing) {
			return ij.apply(this, extension, overwrite_existing);
		},
		applyIf: function (extension) {
			return this.applyIf(extension, false);
		},
		clone: function () {
			return ij.clone(this);
		},
		init: function (config) {
			return this.apply(ij.apply({
				classname: ns + '.Object'
			}, config));
		},
		each: function (callback, scope) {
			ij.each(this, callback, scope);
			
			return this;
		},
		load: function (url, callback, scope) {
			ij.load(url, function (data) {
				if (data) {
					this.apply(data);
				}
				callback.call(scope || this, data);
			}, this);
			
			return this;
		}
	});
})();
